import heapq


def findKthLargest_heap(nums, k):
    """
    方法二：使用最小堆

    """
    # 创建大小为k的最小堆
    heap = []

    for num in nums:
        # 如果堆的大小小于k，直接加入
        if len(heap) < k:
            heapq.heappush(heap, num)
        else:
            # 如果当前数字大于堆顶（最小的），替换堆顶
            if num > heap[0]:
                heapq.heapreplace(heap, num)

    # 堆顶就是第k大的元素
    return heap[0]


# 测试
nums = [3, 2, 1, 5, 6, 4]
k = 2
print(f"第{k}大的元素（堆方法）: {findKthLargest_heap(nums, k)}")